package org.simple.rpc.zookeeper.service;

import java.util.List;

import org.apache.curator.framework.recipes.cache.PathChildrenCache;

/**
 * 定义ZK的操作方法
 * @author wangbo
 *
 */
public interface ZookeeperService {
	/**
	 * 创建永久节点
	 * @param path
	 * @param data
	 */
	public void createNode(String path);

	/**
	 * 创建临时节点
	 * 
	 * @param path
	 * @param data
	 */
	public void createEpheMeralNode(String path);

	/**
	 * 修改节点数据
	 * 
	 * @param path
	 * @param data
	 */
	public void setNodeData(String path, String data);

	/**
	 * 删除节点
	 * 
	 * @param path
	 */
	public void deleteNode(String path);
	
	/**
	 * 是否连接
	 * @return
	 */
	public boolean isConnected();
	
	/**
	 * 关闭
	 */
	public void close();
	
	/**
	 * 得到节点下所有子节点信息
	 * @param path
	 * @return
	 */
	public List<String> getChilds(String path);
	
	/**
	 * 获得节点数据
	 * @param path
	 * @return
	 */
	public byte[] getData(String path);
	
	
	/**
	 * 子节点变化
	 * @param path
	 * @param cacheData
	 * @return
	 */
	public PathChildrenCache pathChildrenCache(String path,Boolean cacheData);
	
	/**
	 * 当前节点变化
	 * @param path
	 * @param dataIsCompressed
	 */
	public void nodeCache(String path,Boolean dataIsCompressed);
	
	/**
	 * 获得 basepath下面 childNodes的所有数据信息
	 * @param basePath
	 * @param childNodes
	 * @return
	 */
	public List<String> getChildDatas(String basePath,List<String> childNodes);
	
	public void init();
}
